19 硬盘文件系统
inode 与块的存储
硬盘分成相同大小的单元,我们称为块(Block)。维护文件分成几块、每一块在哪里等些基本信息 ,以及文件还有元数据部分,例如名字、权限等,需要一个结构 inode 来存放。
每个文件和文件夹都对应一个 inode。
inode 位图和块位图
创建一个新文件调用 open 函数,参数 O_CREAT 表示当文件找不到,就创建一个。open 是一个系统调用,在内核里面会调用 sys_open。从文件系统里面读取 inode 位图,然后找到下一个为 0 的 inode,就是空闲的 inode。
文件系统的格式
目录的存储格式
目录本身也是个文件,也有 inode。inode 里面也是指向一些块。普通文件的块里面保存的是文件数据,目录文件的块里面保存的是目录里面一项一项的文件信息。
软链接和硬链接的存储格式
链接(Link)是文件的别名,链接为两种,硬链接与软链接。
ln [参数][源文件或目录][目标文件或目录]
硬链接与原始文件共用一个 inode ,但是 inode 是不跨文件系统的,每个文件系统都有自己的 inode 列表,因而硬链接是没有办法跨文件系统。软链接相当于重新创建了一个文件,这个文件也有独立的 inode,只不过打开这个文件看里面内容的时候,内容指向另外的一个文件。可以跨文件系统,甚至目标文件被删除了,链接文件还是在的,只不过指向的文件找不到。